两种定义 方法
动态的,可以随意定义二维数组的长度,但是一维数组长度,必须固定
String[][] arr3 = new String[2][];
arr3[0] = new String[]{"小明"};
arr3[0] = new String[2];
System.out.println(arr3[0]);
System.out.println(arr3[0][0]);
System.out.println(arr3[0][1]);
[Ljava.lang.String;@2752f6e2
null
null
静态的,一维数组和二维数组的长度固定。
String[][] arr4 = new String[6][6];
for (int i = 0; i
arr4[i][j] = String.valueOf(i * j + "\t");
System.out.print(arr4[i][j]);
}
System.out.println();
}
0 0 0 0 0 0
0 1 2 3 4 5
0 2 4 6 8 10
0 3 6 9 12 15
0 4 8 12 16 20
0 5 10 15 20 25
总结
1. 二维数组得给,二维数组得元素赋值。
2. 动态赋值与静态赋值得步骤不同
静态赋值,因为二维数组,已经定义长度了,有了默认值,所以堆空间的一维数组就有地址指向二维数组的首地址 **动态赋值,因为二维数组,没有给定长度,一维数组就无法找到二维数组的首地址。所以需要先给二维数组赋值或者定义二维数组的长度在赋值,就不会报错了,否者就会报空指针异常 **
String[][] arr5 = new String[2][];
arr5[0] = new String[]{"小明","小红"};//赋值
arr5[1] = new String[2];//给定长度
arr5[1][0] = "tom";
arr5[1][1] = "male";
for (int i = 0; i
System.out.print(arr5[i][j] + "\t");
}
System.out.println();
}
小明 小红
tom male
动态赋值空指针的原因
|